/******************************************************
Cours:   LOG121
Session: A2013
Groupe:  
Projet: Laboratoire #3
etudiant(e)s: Simon Castro
			  Fredy Alexander 
			  Renaud Vincent
              
              
Professeur : 
Nom du fichier: CreationBunco.java
Date cree: 2013-11-10
Date dern. modif. 2013-11-10
*******************************************************
Historique des modifications
*******************************************************
2013-10-20 Version 1.0
*******************************************************/ 

package bunco;

import java.util.ArrayList;

import cadricielJeuDe.CollectionDes;
import cadricielJeuDe.CollectionJoueurs;
import cadricielJeuDe.CreateurPartie;
import cadricielJeuDe.Fabrique;
import cadricielJeuDe.Partie;
import java.util.Scanner;

/**
 * La classe CreationBunco herite de la classe CreateurParti du framework, afin
 * de creer une parti de jeu de des selon les besoin de bunco.
 * 
 * @author Fredy
 *
 */
public class CreationBunco extends CreateurPartie{
	
	Scanner in = new Scanner(System.in);
	
	/************
	 * Attributs
	 ************/
	
	private Fabrique f;
	private CollectionDes cd;
	private CollectionJoueurs cj;
	private Partie p;
	private int nbrJoueurs;
	private int nbrDes;
	private int nbrTours;
	
	/**
	 * Constructeur de la classe CreationBunco.
	 * 
	 * @param nbrJoueur
	 * @param nbrDes
	 * @param nbrTours
	 */
	public CreationBunco(int nbrJoueurs, int nbrDes, int nbrTours){
		
		this.nbrJoueurs = nbrJoueurs;
		this.nbrDes = nbrDes;
		this.nbrTours = nbrTours;
		f = new Fabrique();
		cd = new CollectionDes();
		cj = new CollectionJoueurs();
	}

	/************
	 * Acesseurs
	 ************/
	
	/**
	 * @return the nbrJoueurs
	 */
	public int getNbrJoueurs() {
		return nbrJoueurs;
	}

	/**
	 * @return the nbrDes
	 */
	public int getNbrDes() {
		return nbrDes;
	}

	/**
	 * @return the nbrTours
	 */
	public int getNbrTours() {
		return nbrTours;
	}

	/************
	 * Mutateurs
	 ************/
	
	/**
	 * @param nbrJoueur the nbrJoueurs to set
	 */
	public void setNbrJoueur(int nbrJoueurs) {
		this.nbrJoueurs = nbrJoueurs;
	}

	/**
	 * @param nbrDes the nbrDes to set
	 */
	public void setNbrDes(int nbrDes) {
		this.nbrDes = nbrDes;
	}

	/**
	 * @param nbrTours the nbrTours to set
	 */
	public void setNbrTours(int nbrTours) {
		this.nbrTours = nbrTours;
	}

	/***********
	 * Methodes
	 ***********/
	
	/**
	 * Methode servant a creer la partie de bunco et enregistrer les informations
	 * dans un object de type Partie
	 */
	public Partie creerPartiBunco(){
		super.creerPartie();
		return new Partie(nbrJoueurs, nbrTours, cj, cd);
	}
	
	/**
	 * Methode utilisant la classe Fabrique du framework pour creer des dees.
	 * Une fois crees, ils sont ajoute a la collection de dees.
	 */
	public void creationDes() {
		
		//Creation d'une liste de 6 element pour les 6 valeurs d'un de
		ArrayList<Integer> listeValeurs = new ArrayList<Integer>(6);
		
		//Remplissage de la liste, des valeur 1,2,3,4,5,6 tel un de a 6 faces.
		for(int i=1; i<7; i++){
			listeValeurs.add(i);
		}
		
		//Creation des des selon le nombre requis, et on les ajouter a la
		//collection.
		for(int i=0; i<nbrDes; i++){
			cd.ajouterDe(f.creationDe(6, listeValeurs));
		}
		
	}

	/**
	 * Methode utilisant la classe Fabrique du framework pour creer des joueurs.
	 * une fois crees, ils sont ajoute a la collection de Joueurs.
	 */
	public void creationJoueurs() {
		
		String nom;
		int i=1;
		
		//Demande a l'utilisateur d'ecrire les noms des joueurs selon le nombre
		//de joueurs requis.
		
		while(i<=nbrJoueurs){
			System.out.println("Nom du "+ i +"e joueur :");
			nom = in.nextLine();
			
			cj.ajouterJoueur(f.creationJoueur(nom));
			i++;
		}
		
	}
	
	
	
}
